import request from '../utils/request.js'

// 获取所有可抢订单列表
export const getOrderList = () => {
  return request.post('/api/workOrderInfo/listAll')
}

// 抢单接口 - 修改为适配新的assign接口
export const grabOrder = (orderId) => {
  // 获取用户信息，提取员工ID
  const userInfo = uni.getStorageSync('userInfo')
  
  // 调用分配订单接口，需要传递订单ID、员工ID和派单员ID
  // 将参数作为URL查询参数传递
  // 使用兼容方式构建查询参数，替代URLSearchParams以支持微信小程序
  const params = [
    `id=${encodeURIComponent(orderId)}`,
    `employeeId=${encodeURIComponent(userInfo?.userId || '')}`,
    `dispatcherId=${encodeURIComponent('1075429579893637120')}`
  ].join('&');
  
  return request.post(`/api/workOrderInfo/assign?${params}`)
}

// 根据标题搜索工单
export const searchOrdersByTitle = (title) => {
  return request.post(`/api/workOrderInfo/getByTitle?title=${encodeURIComponent(title)}`)
}

// 取消订单接口
export const cancelOrder = (orderId) => {
  // 将订单ID作为URL查询参数传递
  return request.post(`/api/workOrderInfo/cancel?id=${orderId}`)
}

// 完成订单接口
export const completeOrder = (data) => {
  // 如果传入的是订单ID（字符串或数字），则使用旧的接口方式
  if (typeof data === 'string' || typeof data === 'number') {
    return request.post(`/api/workOrderInfo/complete?id=${data}`)
  }
  // 如果传入的是对象，则使用新的带服务报酬的接口
  return request.post('/api/workOrderInfo/complete', data)
}

// 获取订单评价记录接口
export const getOrderReview = (workOrderId) => {
  return request.post(`/api/workOrderEvaluation/getByWorkOrderId?workOrderId=${encodeURIComponent(workOrderId)}`)
}

// 用户登录接口 - 使用新的系统服务地址
export const login = (loginRequest) => {
  return request.sys.post('/api/loginInfo/login', loginRequest)
}

// 更新员工位置信息接口
export const updateEmployeeLocation = (locationData) => {
  // 构造符合后端EmpAddressSaveBO对象格式的数据
  const saveBO = {
    empId: locationData.employeeId,
    longitude: locationData.longitude,
    latitude: locationData.latitude,
    address: locationData.address || '' // 添加地址信息，如果不存在则传递空字符串
  };
  
  console.log('发送位置更新请求:', '/api/empAddress/updateLocation', saveBO);
  
  // 使用POST请求发送位置信息
  return request.sys.post('/api/empAddress/updateLocation', saveBO).then(response => {
    console.log('位置更新接口响应:', response);
    return response;
  }).catch(error => {
    console.error('位置更新接口错误:', error);
    throw error;
  });
}

// 获取员工平均星级评分接口
export const getEmployeeRating = (userId) => {
  return request.sys.post(`/api/empRatingStats/getRatingByUserId?userId=${encodeURIComponent(userId)}`);
}

// 获取员工详细信息接口
export const getEmployeeInfo = (id) => {
  return request.sys.post(`/api/sysUser/get?id=${encodeURIComponent(id)}`);
}

export default {
  getOrderList,
  grabOrder,
  searchOrdersByTitle,
  cancelOrder,
  completeOrder,
  getOrderReview,
  login,
  updateEmployeeLocation,
  getEmployeeRating,
  getEmployeeInfo
}
